/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package clases;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

/**
 *
 * @author Miguel_
 */
@Entity
@Table(name = "RECETA")
public class Receta implements Serializable,Comparable {
    
    private Integer id;
    private String ref; //referencia de la receta
    private String nombre;
    private String dificultad;
    private Tipo tipo;
    private Nacionalidad nacionalidad;
    private Collection<Ingrediente> ingredientes = new ArrayList(); //lista de ingredientes que tiene la receta
    private Bebida vino;
    private int duracion;
    private double Kcal;//almacena las kilocalorias de la receta
    private int comensales; //indica el número de comensales de la receta
    private String restaurante;//indica el nombre del restaurante
    private String calle;//nombre de la calle del restaurante
    
    
    public Receta(){}
    
    public Receta(Integer i)
    {
        this.id = i;
    }

    @TableGenerator(
    name="RE_GEN",
    table="JPA_WXS_APP_SEQUENCE_GENERATOR",
    pkColumnName="GEN_KEY",
    valueColumnName="GEN_VALUE",
    pkColumnValue="RECETA_ID",
    allocationSize=1,
    initialValue= 0 )
    @Id
    @GeneratedValue(strategy=GenerationType.TABLE,generator="RE_GEN")
    @Column(name = "ID", nullable = false)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "REF")
    public String getRef() {
        return ref;
    }

    public void setRef(String ref) {
        this.ref = ref;
    }

    @Column(name = "NOMBRE")
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    @Column(name = "DIFICULTAD")
    public String getDificultad() {
        return dificultad;
    }

    public void setDificultad(String dificultad) {
        this.dificultad = dificultad;
    }

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="TIPO_ID")
    public Tipo getTipo() {
        return tipo;
    }

    public void setTipo(Tipo tipo) {
        this.tipo = tipo;
    }

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="NACIONALIDAD_ID")
    public Nacionalidad getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(Nacionalidad nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    @OneToMany(cascade=CascadeType.ALL)
    public Collection<Ingrediente> getIngredientes() {
        return ingredientes;
    }

    public void setIngredientes(Collection<Ingrediente> ingredientes) {
        this.ingredientes = ingredientes;
    }

    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="BEBIDA_ID")
    public Bebida getVino() {
        return vino;
    }

    public void setVino(Bebida vino) {
        this.vino = vino;
    }

    @Column(name = "DURACION")
    public int getDuracion() {
        return duracion;
    }

    public void setDuracion(int duracion) {
        this.duracion = duracion;
    }
    
    @Column(name = "CALORIAS")
    public double getKcal() {
        return Kcal;
    }

    public void setKcal(double Kcal) {
        this.Kcal = Kcal;
    }

    @Column(name = "COMENSALES")
    public int getComensales() {
        return comensales;
    }

    public void setComensales(int comensales) {
        this.comensales = comensales;
    }
    
    public int compareTo(Object o) {
        Receta r = (Receta)o;       

        return this.nombre.compareTo(r.getNombre());
    }

    @Column(name = "RESTAURANTE")
    public String getRestaurante() {
        return restaurante;
    }

    public void setRestaurante(String restaurante) {
        this.restaurante = restaurante;
    }

    @Column(name = "CALLE")
    public String getCalle() {
        return calle;
    }

    public void setCalle(String calle) {
        this.calle = calle;
    }

}


